/**
 *  @author wangmingfu
 *  @date 2019-03-01
 *  正则表达式验证
 */

/**
 * 身份证正则表达式
 */
var ID_CARD_REGEX = /^[1-9][0-9]{5}(19|20)[0-9]{2}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))[0-9]{3}[0-9Xx]$/;

/**
 * 手机号码正则表达式
 * 以1开头,第二位是3/4/5/6/7/8/9任意一个,再加0-9任意9位数
 */
var IPHONE_REGEX = /^1(3|4|5|6|7|8|9)\d{9}$/;
// var IPHONE_REGEX = /^((13[0-9])|(14[5-9])|(15[0-3,5-9])|(16[5-6])|(17[0-8])|(18[0-9])|191|198|199)[0-9]{8}$/;

var ONE = "1"; // 1-女  2-男
/**
 * 校验正确性
 *
 * @param verifyStr    需要校验的字符串
 * @param regex        正则表达式
 * @param verifyLength 字符串长度
 */
function verifyCorrect(verifyStr, regex, verifyLength) {
    if (verifyStr === null || typeof verifyStr === "undefined" || verifyStr.length < verifyLength) {
        return false;
    }
    return regex.test(verifyStr);
}

//验证身份证
function verifyIdCard(idCard) {
    return verifyCorrect(idCard, ID_CARD_REGEX, 18);
}

//验证手机号码
function verifyIPhone(phone) {
    return verifyCorrect(phone, IPHONE_REGEX, 11);
}

//获取区域代码
function getIdCardRegionalismCode(idCard) {
    return idCard.substring(0, 6);
}

/**
 * 获取性别
 *
 * @param idCard     身份证号
 * @param showFormat 返回格式  true 返回 1、2  false 返回 男女
 */
function getIdCardSex(idCard, showFormat) {
    var sexNum = Number(idCard.substring(16, 17));
    var sex = sexNum % 2 === 0 ? "1" : "2";
    if (!showFormat) {
        if (ONE.equals(sex)) {
            return "女";
        }
        return "男";
    }
    return sex;
}
/**
 * 获取当前年龄
 *
 * @param idCard 身份证号
 */
function getIdCardAge(idCard) {
    var currYear = (new Date()).getFullYear();
    var birthDayYear = Number(idCard.substring(6, 10));
    return currYear - birthDayYear;
}
/**
 * 获取出生年月日  按指定格式显示
 * @param idCard    身份证号
 * @param connector 时间连接符
 */
function getIdCardBirthday(idCard, connector) {
    return idCard.substring(6, 10).concat(connector).concat(idCard.substring(10, 12)).concat(connector).concat(idCard.substring(12, 14));
}